Removing the udev-settle service to reduce boot times on Alpine Linux

it's marked as deprecated on other distros anyway?

Home About Projects Blog Games Contact Support

On boot, waiting for udev events to process takes a default 1 minute timeout, and never finishes successfully. It has in the past, but only a couple times that I can remember. Is that from leaving on my machine for days or weeks between reboots and doing a lot of apk update/upgrades including kernel updates? I don't know, but seeing as how it never finishes and slows my boot time from several seconds (post grub, may remove that eventually too) to over a minute, it doesn't seem useful to begin with.

This turns out to be from the udev-settle service in the sysinit runlevel, and from what I could find through web searches, at least for systemd where udev-settle comes from (but isolated via eudev on Alpine Linux), it is deprecated and should not be used anyway. If you use LVM then it may be needed, but I don't use LVM on this PC.

The udev-init-scripts and udev-init-scripts-openrc packages are used and needed for openrc and eudev, and otherwise the setup-devd udev command from the alpine-conf package works and runs fine, no issues (I don't have alpine-conf installed as it's not in /etc/apk/world so it must be part of the default setup-* scripts?), but I don't seem to need udev-settle specifically.

The only thing that's happened is that setting the console font fails on boot now, from setfont(); the default font still works, and setting the font again later in the boot process works fine the 2nd time it is ran, so I don't mind this error. The faster boot more than makes up for an initially unsuccessful but later successful tty font change.

NOTE: If you need to fix or undo these changes, you can run:

doas apk fix udev-init-scripts
doas apk fix udev-init-scripts-openrc
setup-devd udev

To remove udev-settle and remove it from running:

# Remove udev-settle from all runlevels
doas rc-update del udev-settle -a

# Remove script from running on init (ran on startup/boot time?)
doas rm /etc/init.d/udev-settle

If you want to reduce the timeout, but not remove outright, uncomment the #udev_settle_timeout=120 line in /etc/conf.d/udev-settle, and change the number.